MongoDB Upsert | 您所在的位置:网站首页 › mongo upsert › MongoDB Upsert |
MongoDB Upsert
![]() 在 MongoDB 中,upsert 是一种用于在任何操作中插入和更新值的方法。换句话说,MongoDB upsert 方法是插入和更新的组合(插入 + 更新 = upsert)。默认情况下,upsert 方法的值始终为 false。如果文档与指定的查询匹配并且方法的值设置为 true,则更新操作将更新匹配的文档。如果文档与指定的查询不匹配并且方法的值设置为 true,则此方法会在集合中插入一个新文档。此新文档包含指示操作的字段。 MongoDB Upsert 语法: upsert:upsert 选项的值将是 true 或 false。 使用 findAndModify() 函数更新插入:用户可以将 upsert 选项与 findAndModify() 函数结合使用。在此函数中,选项的默认值为 false。如果此选项的值设置为 true,则函数执行以下操作之一: 如果找到与给定查询条件匹配的文档,则 findAndModify() 函数会更新该文档。 如果没有文档匹配给定的查询条件,findAndModify() 函数将一个新文档插入到集合中。语法: db.Collection_name.findAndModify( { selection_criteria:, sort: , remove: , update: , new: , fields: , upsert: , bypassDocumentValidation: , writeConcern: , collation: , arrayFilters: [ , ? ] })例如: 在这个例子中,我们正在使用 Database: yiidian Collection: student Database: three documents that contain details of students db.student.find().pretty() { "_id" : ObjectID("60353f44f196547db6325eb32"), "std_name" : "Jhon", "address" : "England" "passout" : 2018 } { "_id" : ObjectID("60353f44f196547db6325eb33"), "std_name" : "Mike", "address" : "Japan" "passout" : 2019 } { "_id" : ObjectID("60353f44f196547db6325eb34"), "std_name" : "Sam", "address" : "Australia" "passout" : 2016 }现在我们将通过将 upsert 选项设置为 true 来在学生集合中插入一个新文档。 db.student.findAndModify({query:{name:"Jack"}, update:{$set:{address:"Australia"}}, upsert:true})在这里,没有数据与名称“jack”匹配,因此 findAndModify() 函数插入一个包含两个字段(即“name”和“address”)的新文档,因为 upsert 方法的值设置为 true。 您可以将 upsert 选项与 update() 函数结合使用。在此函数中,选项的默认值为 false。如果此选项的值设置为 true,则函数执行以下操作之一: 如果找到与给定查询条件匹配的文档,则 update() 函数会更新该文档。 如果没有文档与给定的查询条件匹配,update() 函数将一个新文档插入到集合中。语法: db.Collection_name.update({Selection_criteria}, {$set : {Update_data}}, { upsert : , multi : , writeConcern : , collation : , arrayFilters : [ , . . . ? ], hint : })例如: 在这个例子中,我们正在使用 Database: yiidian Collection: student Database: three documents that contain details of students db.student.find().pretty() { "_id" : ObjectID("60353f44f196547db6325eb32"), "std_name" : "Jhon", "address" : "England" "passout" : 2018 } { "_id" : ObjectID("60353f44f196547db6325eb33"), "std_name" : "Mike", "address" : "Japan" "passout" : 2019 } { "_id" : ObjectID("60353f44f196547db6325eb34"), "std_name" : "Sam", "address" : "Australia" "passout" : 2016 }现在我们将通过将 upsert 选项设置为 true 来在学生集合中插入一个新文档。 db.employee.update({name:"Priya"}, {$set: {department: "HR"}},{upsert:true})在这里,没有数据与名称“Noah”匹配,因此 update() 函数插入一个包含两个字段(即“name”和“address”)的新文档,因为 upsert 方法的值设置为 true。 如果文档与给定数据不匹配并且 upsert 选项的值设置为 true,则更新操作会根据给定查询参数中的相似性子句创建新文档,并应用更新参数中的表达式。 例如: 在这个例子中,我们正在使用 Database: yiidian Collection: employee Database: four documents that contain details of employees > db.employee.find().pretty() { "_id" : ObjectID("60545245fa51254k5634hg412") "Employee_ID" : "125" "Name" : "Nick" "Phone Number" : "6267896546" } { "_id" : ObjectID("60545245fa51254k5634hg413") "Employee_ID" : "129" "Name" : "John pie" "Phone Number" : "6965453164" } { "_id" : ObjectID("60545245fa51254k5634hg414") "Employee_ID" : "135" "Name" : "Jack" "Phone Number" : "7516584359" } { "_id" : ObjectID("60545245fa51254k5634hg415") "Employee_ID" : "140" "Name" : "Thomas" "Phone Number" : "9654778546" }
在这里,update() 方法根据查询条件创建一个带有字段“Name : Hnery”的新文档,然后对该文档应用 $set 和 $setOnInsert 操作。 |
CopyRight 2018-2019 实验室设备网 版权所有 |